package io;

/**
 * @author weim
 * @date 18-8-28
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/*
 bit：位     一个二进制数据0或1，是1bit；

 byte：字节    存储空间的基本计量单位        1 byte = 8 bit

   一个英文字符占一个字节；     1 字母 = 1 byte = 8 bit

   一个汉字占2个字节；              1 汉字 = 2 byte = 16 bit
 */
//字节流操作的数据单元是8位的字节
//字符流操作的数据单元是16位的字符
//字节流和字符流都属于节点流                 节点流的的构造器参数是一个物理节点   比如一个文件
//输入输出为二进制内容使用字节流            输入输出为文本文件使用字符流
public class ReadWrite1 {

    public static void main(String[] args) throws IOException {

        readWriteFileInputStream(new File("D:\\MyExecutorService.txt"),new File("D:\\copy1.txt"));
        System.out.println("---------------------------------");
        readWriteFileReader(new File("D:\\MyExecutorService.txt"),new File("D:\\copy2.txt"));
        System.out.println("---------------------------------");
    }
    //字节流
    public static void readWriteFileInputStream(File inFile,File outFile) throws IOException{
        //创建字节输入流
        FileInputStream input = new FileInputStream(inFile);
        //输出流
        FileOutputStream output = new FileOutputStream(outFile);

        byte[] buf = new byte[1024];

        while(input.read(buf) > 0) {
            System.out.println(new String(buf));
            output.write(buf);
        }
        output.flush();
        output.close();
        input.close();
        //outFile.delete();
    }
    //字符流
    public static void readWriteFileReader(File inFile,File outFile) throws IOException{
        //创建输入流
        FileReader input = new FileReader(inFile);
        //输出流
        FileWriter output = new FileWriter(outFile);

        char[] buf = new char[512];
        while(input.read(buf) > 0) {
            System.out.println(buf);
            output.write(buf);
        }
        output.flush();
        output.close();
        input.close();
        //outFile.delete();
    }
}
